﻿using PCBase.UIControls;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace VisionCore
{
    public class PRM_ULDST
    {
        [Category("平台参数"), DisplayName("1.载入位置参数"), Description("")]
        [TypeConverter(typeof(PropertiesExpandConverter))]
        public ST_Point Load { get; set; } = new ST_Point();

        [Category("平台参数"), DisplayName("2.载出位置参数"), Description("")]
        [TypeConverter(typeof(PropertiesExpandConverter))]
        public ST_Point Unload { get; set; } = new ST_Point();

        [Category("平台参数"), DisplayName("3.撕膜位置参数"), Description("")]
        [TypeConverter(typeof(PropertiesExpandConverter))]
        public ST_Point FilmRemove { get; set; } = new ST_Point();

        [Category("平台参数"), DisplayName("4.退避位置参数"), Description("")]
        [TypeConverter(typeof(PropertiesExpandConverter))]
        public ST_Point Wait { get; set; } = new ST_Point();

        [Category("扩展轴参数"), DisplayName("Ext位置参数"), Description("")]
        [TypeConverter(typeof(PropertiesExpandConverter))]
        public ULDExt_Point Ext { get; set; } = new ULDExt_Point();

        public override string ToString()
        {
            return "...";
        }
    }
    public class ST_Point
    {
        public double X { get; set; }
        public double Y { get; set; }

        public ST_Point()
        {
            X = 0;
            Y = 0;
        }

        public override string ToString()
        {
            return "...";
        }
    }
    public class ULDExt_Point
    {
        [DisplayName("01.入料装载点"), ReadOnly(true)]
        public double InLD { get; set; } = 0;

        [DisplayName("02.入料卸载点"), ReadOnly(true)]
        public double InULD { get; set; } = 0;

        [DisplayName("03.出料装载点"), ReadOnly(true)]
        public double OutLD { get; set; } = 0;

        [DisplayName("04.出料卸载点"), ReadOnly(true)]
        public double OutULD { get; set; } = 0;
        public override string ToString()
        {
            return "...";
        }
    }

    public class PRM_ULDST_Rec
    {
        [Category("平台参数"), DisplayName("1.对位1位置参数"), Description("")]
        [TypeConverter(typeof(PropertiesExpandConverter))]
        public ST_Point ALG1 { get; set; } = new ST_Point();

        [Category("平台参数"), DisplayName("2.对位2位置参数"), Description("")]
        [TypeConverter(typeof(PropertiesExpandConverter))]
        public ST_Point ALG2 { get; set; } = new ST_Point();

        [Category("平台参数"), DisplayName("3.Ok第一行第一列基准位置"), Description("")]
        [TypeConverter(typeof(PropertiesExpandConverter))]
        public ST_Point OkLD_Base { get; set; } = new ST_Point();

        [Category("平台参数"), DisplayName("4.NG第一行第一列基准位置"), Description("")]
        [TypeConverter(typeof(PropertiesExpandConverter))]
        public ST_Point NGLD_Base { get; set; } = new ST_Point();

        [Category("平台参数"), DisplayName("5.Ext真空吸附第一行基准位置"), Description("")]
        public double Ext_DieLD { get; set; } = 0;

        [Category("补正参数"), DisplayName("6.ULDST载入位置Offset"), Description("")]

        [TypeConverter(typeof(PropertiesExpandConverter))]
        public ST_Point OffSet { get; set; } = new ST_Point();

        public override string ToString()
        {
            return "...";
        }

        public class ST_Point
        {
            public double X { get; set; }
            public double Y { get; set; }

            public ST_Point()
            {
                X = 0;
                Y = 0;
            }

            public override string ToString()
            {
                return "...";
            }
        }
    }
    public class PRM_ULDST_Offset
    {
        [Category("补正参数"), DisplayName("载出位置Offset"), Description("")]

        [TypeConverter(typeof(PropertiesExpandConverter))]
        public ST_Point OffSet { get; set; } = new ST_Point();

        public override string ToString()
        {
            return "...";
        }

        public class ST_Point
        {
            public double X { get; set; }
            public double Y { get; set; }
            public double R { get; set; }

            public ST_Point()
            {
                X = 0;
                Y = 0;
                R = 0;
            }

            public override string ToString()
            {
                return "...";
            }
        }
    }
}
